package SecondeStage.Collection.Set;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class SetMethod {
    public static void main(String[] args) {
        // 1.以Set接口的实现类HashSet为例，展现Set接口的方法
        // 2.set接口的实现类的对象，不能存放重复的元素；可以存放null但只能有一个
        // 3.set接口对象存放的数据是无序的，即添加的顺序和取出的顺序不一致
        // 4.注意: 取出的顺序虽然不是添加的顺序，但是它是固定的，即每次取出的顺序一样
        Set set = new HashSet();
        set.add("john");
        set.add("mary");
        set.add("jack");
        set.add("lucy");
        set.add("john"); // 重复添加
        set.add(null);
        set.add(null);
        System.out.println("set="+set);

        System.out.println("---------------------------");
        // 遍历方式
        // 1.迭代器
        Iterator iterator = set.iterator();
        while (iterator.hasNext()) {
            Object next =  iterator.next();
            System.out.println("obj="+next);
        }
        System.out.println("---------------------------");
        //2.增强for
        for (Object object :set) {
            System.out.println("o="+object);
        }
        // 不能用普通的for循环来迭代，因为set没有索引

        // remove 删除元素
        set.remove(null);
        System.out.println("set="+set);
    }
}
